package com.meituan.sdk.model.tuangouNg.smar.orderPushNotice;

import com.meituan.sdk.annotations.ApiMeta;
import com.google.gson.reflect.TypeToken;
import javax.validation.constraints.NotBlank;
import java.lang.reflect.Type;
import com.meituan.sdk.internal.utils.JsonUtil;
import com.google.gson.annotations.SerializedName;
import javax.validation.constraints.NotNull;
import com.meituan.sdk.MeituanResponse;
import com.meituan.sdk.MeituanRequest;

/**
* 美团推单后，品牌商家确认接单结果
* This file was automatically generated.
*/
@ApiMeta(
    path = "/tuangou/ng/smar/order/pushNotice",
    businessId = 1,
    apiVersion = "10012",
    apiName = "order_push_notice",
    needAuth = true
)
public class OrderPushNoticeRequest implements MeituanRequest<OrderPushNoticeResponse> {
    /**
    * <p data-diff-id="ct-diff-id-cc5083fa-dec2-4132-80e6-c2ea6f70332e">业务标识，30为智能点餐</p>
    */
    @NotNull(message = "bizType不能为空")
    @SerializedName("bizType")
    private Integer bizType;
    /**
    * <p data-diff-id="ct-diff-id-d853bfa9-1e07-4215-be34-6dfe657467b5">美团订单号</p>
    */
    @NotNull(message = "orderId不能为空")
    @SerializedName("orderId")
    private Long orderId;
    /**
    * <p data-diff-id="ct-diff-id-0e2dfc1e-8d27-4126-875d-2d2dcf2a8cb7">请求时间戳</p>
    */
    @NotNull(message = "timestamp不能为空")
    @SerializedName("timestamp")
    private Long timestamp;
    /**
    * <p data-diff-id="ct-diff-id-011a5efd-1c33-462a-a258-6befc019b7dd"><strong><span style="color: rgb(81, 90, 110)">商户订单号，接单时必传</span></strong></p>
    */
    @SerializedName("vendorOrderId")
    private String vendorOrderId;
    /**
    * <p data-diff-id="ct-diff-id-562fa42c-938f-4e83-a0b6-afd0ed7e7754"><strong><span style="color: rgb(81, 90, 110)">取餐码，仅以二维码形式展示给用户，非必传</span></strong></p>
    */
    @SerializedName("takeMark")
    private String takeMark;
    /**
    * <p data-diff-id="ct-diff-id-c4c860ec-7b30-4950-a646-94ec2e1dbb34">取餐口令</p><ul data-diff-id="ct-diff-id-baac9a79-bf7a-48cd-a120-33db896119a9"><li data-list-item-diff-id="ct-list-item-diff-id-cab34465-1a7f-445a-8650-d0b256ba1233"><p data-diff-id="ct-diff-id-e666ea1b-8972-4176-84d1-fcc8c0017322">如品牌自己生成取餐口令，则接单时必传（需审核）</p></li><li data-list-item-diff-id="ct-list-item-diff-id-abf261fe-95bc-4444-8fdf-7eb284f950d9"><p data-diff-id="ct-diff-id-b98dee84-f6e1-4b87-98c7-4e1e5452d474">可以二维码/字符串形式展示，以二维码展示时，takeMark优先级高于takeCode（两者最多仅有一个会转换为二维码）</p></li></ul>
    */
    @SerializedName("takeCode")
    private String takeCode;
    /**
    * <p data-diff-id="ct-diff-id-ce3dbc5b-59cb-41dc-8ca3-17baa02437a5">确认订单结果：</p><ul data-diff-id="ct-diff-id-8bb69268-e7a2-4c42-907d-26a3d2936ac4"><li data-list-item-diff-id="ct-list-item-diff-id-8dc4d55a-1199-45de-8c61-860885ae430e"><p data-diff-id="ct-diff-id-67531a1a-034b-44b1-8596-000416f55a1d">SUCCESS(0, "接单")</p></li><li data-list-item-diff-id="ct-list-item-diff-id-ec2a05be-11b1-4735-b13c-2543d84c413a"><p data-diff-id="ct-diff-id-4b91d929-de4a-408b-9cb4-e1369efc4d5c">FAIL(1, "拒单")</p></li></ul>
    */
    @NotNull(message = "orderConfirmStatus不能为空")
    @SerializedName("orderConfirmStatus")
    private Integer orderConfirmStatus;
    /**
    * <p data-diff-id="ct-diff-id-09b6a5cf-9d3c-4788-9b7c-78ef16f45b4b"><strong><span style="color: rgb(81, 90, 110)">（非必传）用户预计取餐时间；</span><br><span style="color: rgb(81, 90, 110)">（举例）假设用户10:00下单，如果10分钟（该时间依赖门店出单效率与积压订单数量）后可取餐，则需传递的预计取餐时间为10:10；</span><br><span style="color: rgb(81, 90, 110)">（重点提示）用户依赖取餐时间到店，如若传错需要重新进行技术对接</span></strong></p>
    */
    @SerializedName("takeTime")
    private Long takeTime;
    /**
    * <p data-diff-id="ct-diff-id-94aedba1-d012-4eca-bf0e-32d914598fcd"><strong><span style="color: rgb(81, 90, 110)">预约单会给预计开始制作时间，时间戳（预约单必传）</span></strong></p>
    */
    @SerializedName("makeTime")
    private Long makeTime;
    /**
    * <p data-diff-id="ct-diff-id-2da4cc19-77ca-4b0d-933a-831200baa00b"><strong><span style="color: rgb(81, 90, 110)">处理时间</span></strong></p>
    */
    @NotNull(message = "handleTime不能为空")
    @SerializedName("handleTime")
    private Long handleTime;
    /**
    * <p data-diff-id="ct-diff-id-5848996c-fb9d-456c-8516-35a02fe30b90"><strong><span style="color: rgb(81, 90, 110)">发票子渠道，发票需要用到（需要确认开票方式）</span></strong></p>
    */
    @SerializedName("ocOrderType")
    private Integer ocOrderType;
    /**
    * <p data-diff-id="ct-diff-id-925042d1-d0b0-46c3-94a6-b3c9fc53ebe7"><strong><span style="color: rgb(81, 90, 110)">发表主渠道，发票需要用到（需要确认开票方式）</span></strong></p>
    */
    @SerializedName("serviceType")
    private Integer serviceType;
    /**
    * <p data-diff-id="ct-diff-id-5a1373eb-4336-49a9-9cf7-aa1f382f7d85"><strong><span style="color: rgb(81, 90, 110)">操作者Id</span></strong></p>
    */
    @NotBlank(message = "operatorId不能为空")
    @SerializedName("operatorId")
    private String operatorId;
    /**
    * <p data-diff-id="ct-diff-id-bad3a355-994b-4a30-97fc-0f9af82f09ae">操作者名称</p>
    */
    @NotBlank(message = "operateName不能为空")
    @SerializedName("operateName")
    private String operateName;
    /**
    * <p data-diff-id="ct-diff-id-efa3d8db-d496-41b9-9af0-2ce4a4bbc85d">拒单原因，拒单时必填：</p><ul data-diff-id="ct-diff-id-d7267737-2ff2-49e4-a1a2-6442ab9efef6"><li data-list-item-diff-id="ct-list-item-diff-id-d56d39f5-da42-447b-bee8-70cdca5a3102"><p data-diff-id="ct-diff-id-0591f716-2313-4fc9-9aaa-38791caf2e52">DUPLICATE_ORDER(1, "重复订单")</p></li><li data-list-item-diff-id="ct-list-item-diff-id-ece544ef-4365-4b16-b4fc-fc79f52c4471"><p data-diff-id="ct-diff-id-7f550808-27bb-4a61-91f1-40d7371b78a1">SHOP_CLOSE(2, "店铺已打烊")</p></li><li data-list-item-diff-id="ct-list-item-diff-id-4eea9fb8-1f42-49c2-a539-fb6ae2da941b"><p data-diff-id="ct-diff-id-6d851691-7031-4f64-8036-77a2613f5cc5">PROMOTION_ERROR(3, "营销信息错误")</p></li><li data-list-item-diff-id="ct-list-item-diff-id-2903aa77-3e98-4bd1-b000-fb2abb43c27e"><p data-diff-id="ct-diff-id-c63476f8-ce51-40b5-9eaa-f7e613c824bf">SHOP_TIME_NOT_SUPPORT(4, "该时段不支持（预约单）")</p></li><li data-list-item-diff-id="ct-list-item-diff-id-53d1f79a-b82b-4476-83a9-cea0a9ec5fe2"><p data-diff-id="ct-diff-id-ae11f36f-1f15-4c40-9bfa-c7e2b46b5565">SELL_OUT(5, "菜品售完")</p></li><li data-list-item-diff-id="ct-list-item-diff-id-7140f53b-78af-4601-8e44-281d97e967f5"><p data-diff-id="ct-diff-id-9f4cca80-abbf-480c-89a5-9dd691a6751e">ORDER_ERROR(6, "其他原因")</p></li></ul>
    */
    @SerializedName("vendorConfirmReject")
    private Integer vendorConfirmReject;
    /**
    * <p data-diff-id="ct-diff-id-4b870039-ddae-45b2-b655-6653983531cf"><strong><span style="color: rgb(81, 90, 110)">拒单描述，拒单时必填</span></strong></p>
    */
    @SerializedName("rejectMessage")
    private String rejectMessage;

    public Integer getBizType() {
        return bizType;
    }
    public void setBizType(Integer bizType) {
        this.bizType = bizType;
    }
    public Long getOrderId() {
        return orderId;
    }
    public void setOrderId(Long orderId) {
        this.orderId = orderId;
    }
    public Long getTimestamp() {
        return timestamp;
    }
    public void setTimestamp(Long timestamp) {
        this.timestamp = timestamp;
    }
    public String getVendorOrderId() {
        return vendorOrderId;
    }
    public void setVendorOrderId(String vendorOrderId) {
        this.vendorOrderId = vendorOrderId;
    }
    public String getTakeMark() {
        return takeMark;
    }
    public void setTakeMark(String takeMark) {
        this.takeMark = takeMark;
    }
    public String getTakeCode() {
        return takeCode;
    }
    public void setTakeCode(String takeCode) {
        this.takeCode = takeCode;
    }
    public Integer getOrderConfirmStatus() {
        return orderConfirmStatus;
    }
    public void setOrderConfirmStatus(Integer orderConfirmStatus) {
        this.orderConfirmStatus = orderConfirmStatus;
    }
    public Long getTakeTime() {
        return takeTime;
    }
    public void setTakeTime(Long takeTime) {
        this.takeTime = takeTime;
    }
    public Long getMakeTime() {
        return makeTime;
    }
    public void setMakeTime(Long makeTime) {
        this.makeTime = makeTime;
    }
    public Long getHandleTime() {
        return handleTime;
    }
    public void setHandleTime(Long handleTime) {
        this.handleTime = handleTime;
    }
    public Integer getOcOrderType() {
        return ocOrderType;
    }
    public void setOcOrderType(Integer ocOrderType) {
        this.ocOrderType = ocOrderType;
    }
    public Integer getServiceType() {
        return serviceType;
    }
    public void setServiceType(Integer serviceType) {
        this.serviceType = serviceType;
    }
    public String getOperatorId() {
        return operatorId;
    }
    public void setOperatorId(String operatorId) {
        this.operatorId = operatorId;
    }
    public String getOperateName() {
        return operateName;
    }
    public void setOperateName(String operateName) {
        this.operateName = operateName;
    }
    public Integer getVendorConfirmReject() {
        return vendorConfirmReject;
    }
    public void setVendorConfirmReject(Integer vendorConfirmReject) {
        this.vendorConfirmReject = vendorConfirmReject;
    }
    public String getRejectMessage() {
        return rejectMessage;
    }
    public void setRejectMessage(String rejectMessage) {
        this.rejectMessage = rejectMessage;
    }


    @Override
    public MeituanResponse<OrderPushNoticeResponse> deserializeResponse(String response) {
        Type type = new TypeToken<MeituanResponse<OrderPushNoticeResponse>>(){}.getType();
        return JsonUtil.fromJson(response, type);
    }
    @Override
    public String serializeToJson() {
        return JsonUtil.toJson(this);
    }


    @Override
    public String toString() {
        return "OrderPushNoticeRequest{" + "bizType=" + bizType + "," + "orderId=" + orderId + "," + "timestamp=" + timestamp + "," + "vendorOrderId=" + vendorOrderId + "," + "takeMark=" + takeMark + "," + "takeCode=" + takeCode + "," + "orderConfirmStatus=" + orderConfirmStatus + "," + "takeTime=" + takeTime + "," + "makeTime=" + makeTime + "," + "handleTime=" + handleTime + "," + "ocOrderType=" + ocOrderType + "," + "serviceType=" + serviceType + "," + "operatorId=" + operatorId + "," + "operateName=" + operateName + "," + "vendorConfirmReject=" + vendorConfirmReject + "," + "rejectMessage=" + rejectMessage + "}";
    }
}
